package at.tyron.vintagecraft;
import net.minecraft.world.WorldType;
import java.lang.reflect.*;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import at.tyron.vintagecraft.Network.PacketPipeline;
import at.tyron.vintagecraft.World.Recipes;
import at.tyron.vintagecraft.WorldGen.DynTreeGen;
import at.tyron.vintagecraft.WorldGen.WorldProviderVC;
import at.tyron.vintagecraft.WorldGen.WorldTypeVC;
import at.tyron.vintagecraft.WorldGen.WorldGenDeposits;
import at.tyron.vintagecraft.WorldGen.MapGenFlora;
import at.tyron.vintagecraft.client.ClientProxy;
import net.minecraft.block.Block;
import net.minecraft.block.BlockColored;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockGlass;
import net.minecraft.block.BlockGrass;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockRedSandstone;
import net.minecraft.block.BlockSand;
import net.minecraft.block.BlockSandStone;
import net.minecraft.block.BlockStone;
import net.minecraft.block.BlockStoneSlab;
import net.minecraft.block.BlockStoneSlabNew;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.command.ICommandManager;
import net.minecraft.command.ServerCommandManager;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentLootBonus;
import net.minecraft.enchantment.EnumEnchantmentType;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.monster.EntityEnderman;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.*;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.item.crafting.ShapedRecipes;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.gen.feature.WorldGenDungeons;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.event.entity.EntityEvent;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import net.minecraftforge.event.entity.living.LivingDropsEvent;
import net.minecraftforge.event.entity.living.LivingEvent;
import net.minecraftforge.event.entity.player.BonemealEvent;
import net.minecraftforge.event.world.ChunkDataEvent;
import net.minecraftforge.event.world.ChunkEvent;
import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.Mod.Instance;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartedEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.eventhandler.Event;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.IEventListener;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.ServerTickEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.server.FMLServerHandler;
@Mod(modid = ModInfo.ModID, version = ModInfo.ModVersion, acceptableRemoteVersions = "*")
public class VintageTG {
@Instance("vintagetg")
public static VintageTG instance;
@SidedProxy(clientSide = ModInfo.CLIENT_PROXY_CLASS, serverSide = ModInfo.SERVER_PROXY_CLASS)
public static CommonProxy proxy;
// The packet pipeline
public static final PacketPipeline packetPipeline = new PacketPipeline();
static WorldType vcraftflat;
static WorldType vcraft;
public static Configuration cfg;
@EventHandler
public static void initData(FMLPreInitializationEvent event) {
cfg = new Configuration(event.getSuggestedConfigurationFile());
}
@EventHandler
public void init(FMLInitializationEvent event) throws Exception {
DynTreeGen.initGenerators();
packetPipeline.initalise();
FMLCommonHandler.instance().bus().register(this);
MinecraftForge.EVENT_BUS.register(this);
proxy.registerRenderInformation();
//proxy.registerTileEntities();
// NetworkRegistry.INSTANCE.registerGuiHandler(instance, proxy);
System.out.println("vcraft has init.");
GameRegistry.registerWorldGenerator(new WorldGenDeposits(), 4);
//GameRegistry.registerWorldGenerator(new WorldGenFlora(), 5);
WorldType.DEFAULT = WorldTypeVC.DEFAULT;
WorldType.FLAT = WorldTypeVC.FLAT;
// DimensionManager.unregisterDimension(-1);
DimensionManager.unregisterDimension(0);
DimensionManager.unregisterDimension(1);
//DimensionManager.unregisterProviderType(-1);
DimensionManager.unregisterProviderType(0);
DimensionManager.unregisterProviderType(1);
DimensionManager.registerProviderType(0, WorldProviderVC.class, true);
DimensionManager.registerProviderType(1, WorldProviderVC.class, false);
//DimensionManager.registerDimension(-1, -1);
DimensionManager.registerDimension(0, 0);
DimensionManager.registerDimension(1, 1);
proxy.init(event);
if (cfg.getBoolean("regstonerecipes", "general", true, "Whether or not to register stone recipes for Granite, Diorite and Andesite")) {
Recipes.RegisterRecipes();
}
cfg.save();
}
private int getNextWorldTypeId() {
for (int idx=0; idx<WorldType.worldTypes.length; idx++)
if (WorldType.worldTypes[idx]==null)
return idx;
return -1;
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) { proxy.postInit(event); }
@EventHandler
public void onServerStart(FMLServerStartingEvent evt) {
MinecraftServer server = MinecraftServer.getServer();
ICommandManager command = server.getCommandManager();
ServerCommandManager manager = (ServerCommandManager) command;
manager.registerCommand(new VintageCraftCommands());
}
}